package com.javastudy.liuhouse.lambda.stream;

import org.junit.Test;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.stream.Stream;

//map()方法用于将一个Stream的每个元素映射成领一个元素并转换成一个新的Stream

//Map操作
public class MapStream {

    @Test
    public void testMap01(){
        //定义一个Stream
        Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
        //使用map将原数据进行修改
        Stream<Integer> s2 = s.map(n -> n * n);
        s2.forEach(System.out::println);
    }


    //利用Map,不仅仅可以完成数学计算,对于字符串操作,以及任何的Java对象都是非常有用的
    //若通过若干map转换,可以写出逻辑简单,清晰的代码
    @Test
    public void testMap02(){
        Arrays.asList("  Apple " , " Per " , "ORANGE" , " BaNaNa")
                .stream()
                .map(String::trim)//去除空格
                .map(String::toLowerCase)//变小写
                .forEach(System.out::println);
    }



    @Test
    public void testMap03(){
        String[] arr = new String[]{" 2019 -    12   -31 " , "2020 -01-09" , "2020- 05 - 01" , "2022 -02 - 01"};
        //请使用map把String[]转换为LocalDate 并打印
        Stream<LocalDate> localDateStream = Arrays.stream(arr).map(e -> e.replaceAll("\\s", ""))
                .map(e -> LocalDate.parse(e, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        localDateStream.forEach(System.out::println);
    }



}
